layui.use(['jquery', 'layer', 'upload', 'excel', 'laytpl', 'element', 'code','form'], function () {
    var $       = layui.jquery;
    var form    = layui.form;
    var layer   = layui.layer;
    var excel   = layui.excel;
    var upload  = layui.upload;
    var laytpl  = layui.laytpl;
    var element = layui.element;

    /**
     * 上传excel的处理函数，传入文件对象数组
     * @param  {[type]} files [description]
     * @return {[type]}       [description]
     */
    function uploadExcel(files) {
        
        try {
            excel.importExcel(files, {
                // 读取数据的同时梳理数据
                fields: {
                    'sname'            : 'A',
                    'zxr_tel'          : 'B',
                    'infosource'       : 'C',
                    'sadd'             : 'D',
                    'zx_course'        : 'E',
                    'source_details'   : 'F',
                    'zx_form'          : 'G',
                    'schedule'         : 'H',
                    'degree'           : 'I',
                    'graduation_school': 'J',
                    'create_time'      : 'K',
                    'wechatqq'         : 'L',
                    'oldzxlog'         : 'M',
                    'sstatus'          : 'N',
                    'consultant'       : 'O',
                    'receptionist'       : 'P',
                }
            }, function (data) {
                // 还可以再进行数据梳理
                data = excel.filterImportData(data, {
                    'sname'            : 'sname',
                    'zxr_tel'          : 'zxr_tel',
                    'infosource'       : 'infosource',
                    'sadd'             : 'sadd',
                    'zx_course'        : 'zx_course',
                    'source_details'   : 'source_details',
                    'zx_form'          : 'zx_form',
                    'schedule'         : 'schedule',
                    'degree'           : 'degree',
                    'graduation_school': 'graduation_school',
                    'create_time'      : 'create_time',
                    'wechatqq'         : 'wechatqq',
                    'oldzxlog'         : 'oldzxlog',            //旧数据中的咨询日志
                    'sstatus'          : 'sstatus',            //资源状态
                    'consultant'       : 'consultant',      //咨询顾问
                    'receptionist'       : 'receptionist',      //咨询顾问
                });
               
                for (var key in data[0]) {
                    var senddata = data[0][key];
                    data = senddata;
                    break;
                }

                for (var key in data) {
                    for(var key2 in data[key]){
                        if(typeof data[key][key2] == 'string'){
                            data[key][key2] = data[key][key2].replace(/[\n\t\r]/g, "");
                            data[key][key2] = data[key][key2].replace(/\ +/g, "");
                        }
                        
                    }
                   
                }
                // 如果不需要展示直接上传，可以再次 $.ajax() 将JSON数据通过 JSON.stringify() 处理后传递到后端即可
                layer.open({
                    title: '文件转换结果 - ' + files[0].name,
                    area: ['auto', '699px'],
                    tipsMore: true,
                    content: laytpl($('#LAY-excel-export-ans').html()).render({
                        data: data,
                        files: files,
                        tab: '数据'
                    }),
                    success: function () {
                        element.render('tab');
                        layui.code({});
                    },
                    yes: function (index) {
                        var tabArr = data[0];
                        data.splice(0, 1);
                        var receptionist2 = $('#receptionist2').val();
                        // if (receptionist2 == -1) {
                        //     // layer.msg('请选择[接待员]'); 
                        //     $('#receptionist2').css('border', '1px #F44336 solid');
                        //     layer.tips('请选择[接待员]', '#receptionist2', {
                        //         tips: 1
                        //     });
                        //     return false;
                        // } else {
                        //     $('#receptionist2').css('border', '1px #cfdadd solid');
                        // }

                        var loadindex = layer.load(1);
                        $.post(excelAddUrl, {
                            data: JSON.stringify(data),
                            receptionist: receptionist2
                        }, function (re) {
                            layer.close(loadindex);
                            if (re.data.repeatArr)
                            re.data.repeatArr.unshift(['姓名', '手机号','来源','地址','咨询课程','来源明细','咨询形式','当前进度','所学专业','毕业院校','咨询时间','微信','咨询记录','状态(学生分类)','咨询顾问','接待员','备注']);
                            layer.open({
                                title: '添加报告',
                                area: ['auto', '699px'],
                                tipsMore: true,
                                content: laytpl($('#LAY-excel-export-ans').html()).render({
                                    data: re.data.repeatArr,
                                    files: files,
                                    tab: '以下数据无法添加'
                                }),
                                success: function () {
                                    element.render('tab');

                                }
                            });
                        });

                        $('#LAY-excel-import-excel').val('');
                    },
                    cancel: function () {
                        $('#LAY-excel-import-excel').val('');
                    }
                });
            });
        } catch (e) {
            layer.alert(e.message);
        }
    };


    /**
     * 导出接口数据的样例
     * @return {[type]} [description]
     */
    function exportApiDemo(url,tableField,tableHead) {
        layui.use(['jquery', 'excel', 'layer'], function () {
            var $ = layui.jquery;
            var layer = layui.layer;
            var excel = layui.excel;
            var loadIndex = layer.load(1);
            var startime = $('#start_time').val();
            var endtime = $('#end_time').val();
            var sstatus = $('#status').val();

            // 模拟从后端接口读取需要导出的数据
            $.ajax({
                url: url,
                type: 'post',
                dataType: 'json',
                data: {startime:startime,endtime:endtime,sstatus:sstatus},
                success: function (res) {
                    var data = res.data;
                    // 重点！！！如果后端给的数据顺序和映射关系不对，请执行梳理函数后导出
                    data = excel.filterExportData(data,tableField);
                    
                    // 重点2！！！一般都需要加一个表头，表头的键名顺序需要与最终导出的数据一致
                    data.unshift(tableHead);
                    
                    var timestart = Date.now();
                    excel.exportExcel({
                        sheet1: data
                    }, '导出接口数据.xlsx', 'xlsx');
                    var timeend = Date.now();
                    layer.close(loadIndex); //关闭加载层

                    var spent = (timeend - timestart) / 1000;
                    layer.alert('单纯导出耗时 ' + spent + ' s');
                },
                error: function () {
                    layer.alert('获取数据失败，请检查是否部署在本地服务器环境下');
                }
            });
        });
    }
    //upload上传实例
    var uploadInst = upload.render({
        elem: '#LAY-excel-upload' //绑定元素
            ,
        url: '/upload/' //上传接口（PS:这里不用传递整个 excel）
            ,
        auto: false //选择文件后不自动上传
            ,
        accept: 'file',
        choose: function (obj) { // 选择文件回调
            var files = obj.pushFile();
            files = Object.values(files); // 注意这里的数据需要是数组，所以需要转换一下
            uploadExcel(files);
        }
    });

    $(function () {
        // 监听上传文件的事件
        $('#LAY-excel-import-excel').change(function (e) {
            var files = e.target.files;
            uploadExcel(files);
        });
        // 文件拖拽
        $('body')[0].ondragover = function (e) {
            e.preventDefault();
        }
        $('body')[0].ondrop = function (e) {
            e.preventDefault();
            var files = e.dataTransfer.files;
            uploadExcel(files);
        }
         //导出excel
         $('#LAY-excel-export-excel').click(function () {
            var data = $('.field input[type="checkbox"]:checked');
            var tableField = {}; //要输出的字段
            var tableHead = {};  //字段的表头
            $(data).each(function(){
                var that = $(this);
                var id = that.attr('id');
                var value = that.val();
                tableField[id]=id;
                tableHead[id] = value;
            });
            var url = $(this).attr('url');
            exportApiDemo(url,tableField,tableHead);
        });


    });

    


});